# -*- coding:utf-8 -*-
# title           :
# description     :
# author          :Python超人/三月三提供
# date            :2024-05-01
# link            :https://gitcode.net/pythoncr/
# python_version  :3.9
# ==============================================================================
from 神笔码靓.码靓库.地理.地图数据 import 获取世界地图数据
from 神笔码靓.码靓库.地理.地图绘图板 import 地图绘图板
from 神笔码靓.神笔库.通用工具集 import *
from 神笔码靓.神笔库.元素库 import 文字元素
from 神笔码靓.神笔库.定义集 import *


class 世界地图绘图板(地图绘图板):
    背景颜色列表 = [
        "#FF1493", "#FF6347", "#FF00FF", "#6495ED", "#FF7F50", "#8B4513", "#2E8B57", "#DAA520",
        "#D2691E", "#DC143C", "#00FFFF", "#ADFF2F", "#FFD700", "#FF69B4", "#CD5C5C", "#4B0082",
        "#FFEFD5", "#FFDEAD", "#FFA07A", "#FF8C00", "#FF7F50", "#FF6347", "#FF1493", "#FF00FF",
        "#EE82EE", "#C71585", "#BC8F8F", "#A0522D", "#8B4513",
    ]
    文字调整 = {
        "UnitedStates": lambda 字, 位置, 高清图: (字.平移(50, 50), 高清图.复制元素(对象元素=字, x=-150, y=-130)),
        "Canada": lambda 字, 位置, 高清图: 字.平移(-50, 80),
        "Russia": lambda 字, 位置, 高清图: 字.字体大小(10).平移(0, 80),
        "China": lambda 字, 位置, 高清图: 字.字体大小(10).字符间距(20).平移(10, 15),
        "FrenchSouthernandAntarcticLands": lambda 字, 位置, 高清图: 字.平移(0, 5),
    }

    def 区域路径设置(self, 序号, 区域名称):
        if 区域名称 == "China":
            区域颜色 = 颜色.红色
        else:
            颜色数 = 返回长度(self.背景颜色列表)
            区域颜色 = self.背景颜色列表[序号 % 颜色数]
        return {"填充颜色": 区域颜色}

    def 区域名称设置(self, 区域名称):
        if 区域名称 == "China":
            区域名称 = "中国"
        else:
            区域名称拼接 = 列表()
            for 索引值, 字符 in 索引列举(区域名称):
                if 字符.isupper() and 索引值 > 0:
                    # 首字母大写（第一个除外）前面加空格
                    区域名称拼接.添加元素(' ')
                区域名称拼接.添加元素(字符)
            区域名称 = ''.join(区域名称拼接)

        return {"区域名称": 区域名称, "字体大小": 4}

    def 区域文字调整(self, 区域名称: str, 区域文字元素: 文字元素, 位置信息):
        区域文字元素.阴影(偏移=(0.4, 0.4), 模糊度=0.5)
        if 区域名称 in self.文字调整:
            self.文字调整[区域名称](区域文字元素, 位置信息, self)


if __name__ == '__main__':
    地图数据 = 获取世界地图数据()
    作品文件路径 = 作品输出目录("世界地图")
    地图 = 世界地图绘图板(地图数据=地图数据, 作品文件路径=作品文件路径, 宽=1020, 高=650)
    地图.完成()
